import request from '@/utils/request'

// api地址
const api = {
  list: 'clientApi/book/list',
  detail: 'clientApi/book/detail',
  cate: 'clientApi/book/cateList',
  submit: 'clientApi/book/submit',
  bookable: 'clientApi/book/bookable',
  myBookList: 'clientApi/book/myBook',
  myBookDetail: 'clientApi/book/myBookDetail',
  cancel: 'clientApi/book/cancel',


  // 绘本阅读相关接口
  getBookList: 'app-api/book/book/page',


  addBook: 'app-api/book/add',
  updateBook: 'app-api/book/update',
  deleteBook: 'app-api/book/delete',
  updateBookCollect: 'app-api/bookShelfCollect/collectBook',
  isCollectBook: 'app-api/bookShelfCollect/isCollectBook',
}

// 预约项目列表
export const list = (param) => {
  return request.post(api.list, param)
}

// 预约详情
export const detail = (bookId) => {
  return request.post(api.detail, { bookId })
}

// 预约分类列表
export const cateList = (param) => {
  return request.get(api.cate, param)
}

// 提交预约
export const submit = (data) => {
  return request.post(api.submit, data)
}

// 是否可预约
export const bookable = (data) => {
  return request.post(api.bookable, data)
}

// 我的预约列表
export const myBookList = (param) => {
  return request.get(api.myBookList, param)
}

// 我的预约详情
export const myBookDetail = (bookId) => {
  return request.post(api.myBookDetail, { bookId })
}

// 取消预约
export function cancel(bookId, data) {
  return request.get(api.cancel, { bookId, ...data })
}

/**
 * 根据绘本ID查询书籍列表
 * @param {Object} param - 查询参数
 * @param {string} param.pageNo - 页码（必填）
 * @param {string} param.pageSize - 每页数量（必填）
 * @param {string} param.bookShelfId - 书架ID（必填）
 * @param {string} [param.bookName] - 书籍名称（可选）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {
 *     list: [{
 *       id: number,
 *       bookName: string,        // 书籍名称
 *       bookShelfId: number,     // 绘本ID
 *       isCollect: boolean,      // 是否收藏 true是 false否
 *       url: string,
 *       createTime: number,
 *       updateTime: number,
 *       creator: string,
 *       updater: string,
 *       deleted: boolean,
 *       tenantId: number
 *     }],
 *     total: number            // 总数
 *   },
 *   msg: string
 * }
 */
export const getBookList = (param) => {
  return request.get(api.getBookList, param)
}

/**
 * 新增书籍
 * @param {Object} data - 书籍数据
 * @param {string} data.bookName - 书籍名称
 * @param {number} data.bookShelfId - 书架ID
 * @param {boolean} [data.isCollect] - 是否收藏
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const addBook = (data) => {
  return request.post(api.addBook, data)
}

/**
 * 修改书籍
 * @param {Object} data - 书籍数据
 * @param {number} data.id - 书籍ID（必填）
 * @param {string} data.bookName - 书籍名称（必填）
 * @param {number} data.bookShelfId - 绘本ID（必填）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBook = (data) => {
  return request.put(api.updateBook, data)
}

/**
 * 删除书籍
 * @param {string|number} id - 书籍ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteBook = (id) => {
  return request.delete(`${api.deleteBook}/${id}`)
}

/**
 * 书籍加入收藏或取消收藏
 * @param {string|number} id - 书籍ID
 * @param {boolean} isCollect - 收藏状态（true：收藏，false：取消收藏）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookCollect = (id, isCollect) => {
  return request.get(`${api.updateBookCollect}/${id}?isCollect=${isCollect}`)
}




export const isCollectBook = (id) => {
  return request.get(`${api.isCollectBook}/${id}`)
}